
public class Exam {

	public static void main(String[] args) {
		int[] arr = new int[] { 2, 90, 72, 121, 82, 22, 0, 34 };
		bubbleSort(arr);
		divide3Sum();
		maxArr();
		sum();
		date();

	}

	/**
	 * 计算二十天后是周几
	 */
	private static void date() {
		// 年
		int iYear = 2017;
		// 月
		int iMonth = 7;
		// 日
		int iDate = 3;
		// 星期
		int weekday = 3;
		// 计算的天数
		int day = 20;

		// 计算日期
		if (iMonth == 1 || iMonth == 3 || iMonth == 5 || iMonth == 7 || iMonth == 8 || iMonth == 10 || iMonth == 12) {
			if (iDate + day > 31) {
				iMonth++;
				iDate = iDate + day - 31;
			} else {
				iDate = iDate + day;
			}
		} else if (iMonth == 2 || iMonth == 4 || iMonth == 6 || iMonth == 9 || iMonth == 11) {
			if (iDate + day > 30) {
				iMonth++;
				iDate = iDate + day - 30;
			} else {
				iDate = iDate + day;
			}
		} else {
			System.out.println("月份输入错误");
		}

		// 计算星期几
		switch (day % 7) {
		case 1:
			System.out.println(day + "天后是" + iYear + "-" + iMonth + "-" + iDate + "当天是周三");
			break;
		case 2:
			System.out.println(day + "天后是" + iYear + "-" + iMonth + "-" + iDate + "当天是周四");
			break;
		case 3:
			System.out.println(day + "天后是" + iYear + "-" + iMonth + "-" + iDate + "当天是周五");
			break;
		case 4:
			System.out.println(day + "天后是" + iYear + "-" + iMonth + "-" + iDate + "当天是周六");
			break;
		case 5:
			System.out.println(day + "天后是" + iYear + "-" + iMonth + "-" + iDate + "当天是周日");
			break;
		case 6:
			System.out.println(day + "天后是" + iYear + "-" + iMonth + "-" + iDate + "当天是周一");
			break;
		case 0:
			System.out.println(day + "天后是" + iYear + "-" + iMonth + "-" + iDate + "当天是周二");
			break;

		default:
			break;
		}

	}

	/**
	 * @param arr
	 */
	private static void bubbleSort(int[] arr) {
		// 定义标志位，没有交换时数组有序
		boolean isSorted = true;
		// 定义中间变量
		int temp;

		// 给数组排序，遍历的次数
		for (int i = 0; i < arr.length; i++) {
			// 设置标志位为true
			isSorted = true;
			// 第i次遍历的比较
			for (int j = 0; j < arr.length - i - 1; j++) {
				// 如果小坐标的值大于大坐标的值交换
				if (arr[j] > arr[j + 1]) {
					isSorted = false;
					temp = arr[j];
					arr[j] = arr[j + 1];
					arr[j + 1] = temp;
				}
			}
			if (isSorted) {
				System.out.println("数组排序完成");
				break;
			}
		}

		// 遍历输出数组
		for (int i = 0; i < arr.length; i++) {
			System.out.print(arr[i] + " ");
		}

		System.out.println();

	}

	/**
	 * 使用 for 循环，求 1 到 100 之间所有能被 3 整除的整数的和。
	 * 
	 */
	private static void divide3Sum() {
		// 求和
		int sum = 0;

		// for循环
		for (int i = 3; i < 100; i = i + 3) {
			// 能被3整除的数为3-99，递增3
			sum += i;
		}

		// 输出
		System.out.println("1 到 100 之间所有能被 3 整除的整数的和为" + sum);
	}

	/**
	 * 给定一维数组{ -10，2，3，246，-100，0，5} ，计算出数组中的平均值、最大值、最小值。
	 */
	private static void maxArr() {
		// 数组
		int[] arr = new int[] { -10, 2, 3, 246, -100, 0, 5 };
		// 最大值
		int max = arr[0];
		// 最小值
		int min = arr[0];
		// 平均值
		double avg = arr[0];
		for (int i = 1; i < arr.length; i++) {
			if (arr[i] < min) {
				min = arr[i];
			}
			if (arr[i] > max) {
				max = arr[i];
			}
			avg += arr[i];
		}

		System.out.println("数组中的最大值为" + max + "，最小值为" + min + ",平均值为" + avg / arr.length);

	}

	/**
	 * 使用do-while循环，计算1+2+3+…+10的和
	 */
	private static void sum() {

		// 定义循环因子
		int i = 1;
		// 定义求和
		int iSum = 0;

		// do while循环

		do {
			// 累加和
			iSum += i;
			// 循环因子
			i++;

		} while (i <= 10);

		// 输出
		System.out.println("使用do-while循环，计算1+2+3+…+10的和为" + iSum);
	}

}
